/*
每一个构造函数都有一个原型对象，原型对象又包含一个指向构造函数的指针，而实例则包含一个原型对象的指针。
 */

function Parent1() {
    this.name = 'parent1';
    this.play = [1, 2, 3]
}

function Child1() {
    this.type = 'child2';
}

Child1.prototype = new Parent1();
console.log(Child1.prototype);
let child = new Child1();
console.log(child);


let s1 = new Child1();
let s2 = new Child1();
s1.play.push(4);
console.log(s1.play, s2.play);
console.log(Child1.prototype);

/*
s1和s2两个实例使用的是同一个原型对象。它们的内存空间是共享的，当一个发生变化的时候，另外一个也随之进行了变化，这就是使用原型链继承方式的一个缺点。
 */